home *** CD-ROM | disk | FTP | other *** search
- package sun.java2d;
-
- import java.awt.AWTPermission;
- import java.awt.Color;
- import java.awt.GraphicsConfiguration;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.Transparency;
- import java.awt.image.ColorModel;
- import java.awt.image.IndexColorModel;
- import java.awt.image.Raster;
- import java.security.Permission;
- import sun.awt.image.SurfaceManager;
- import sun.java2d.loops.CompositeType;
- import sun.java2d.loops.DrawGlyphList;
- import sun.java2d.loops.DrawGlyphListAA;
- import sun.java2d.loops.DrawGlyphListLCD;
- import sun.java2d.loops.DrawLine;
- import sun.java2d.loops.DrawPath;
- import sun.java2d.loops.DrawPolygons;
- import sun.java2d.loops.DrawRect;
- import sun.java2d.loops.FillPath;
- import sun.java2d.loops.FillRect;
- import sun.java2d.loops.FillSpans;
- import sun.java2d.loops.MaskFill;
- import sun.java2d.loops.RenderCache;
- import sun.java2d.loops.RenderLoops;
- import sun.java2d.loops.SurfaceType;
- import sun.java2d.pipe.AATextRenderer;
- import sun.java2d.pipe.AlphaColorPipe;
- import sun.java2d.pipe.AlphaPaintPipe;
- import sun.java2d.pipe.CompositePipe;
- import sun.java2d.pipe.DrawImage;
- import sun.java2d.pipe.DrawImagePipe;
- import sun.java2d.pipe.DuctusShapeRenderer;
- import sun.java2d.pipe.GeneralCompositePipe;
- import sun.java2d.pipe.LCDTextRenderer;
- import sun.java2d.pipe.LoopPipe;
- import sun.java2d.pipe.OutlineTextRenderer;
- import sun.java2d.pipe.PixelToShapeConverter;
- import sun.java2d.pipe.SolidTextRenderer;
- import sun.java2d.pipe.SpanClipRenderer;
- import sun.java2d.pipe.SpanShapeRenderer;
- import sun.java2d.pipe.TextPipe;
- import sun.java2d.pipe.TextRenderer;
-
- public abstract class SurfaceData implements Transparency, DisposerTarget {
- private long pData;
- private boolean valid;
- private boolean surfaceLost;
- private SurfaceType surfaceType;
- private ColorModel colorModel;
- private boolean dirty;
- private boolean needsBackup = true;
- private int numCopies;
- private Object disposerReferent = new Object();
- protected static final LoopPipe colorPrimitives;
- public static final TextPipe outlineTextRenderer;
- public static final TextPipe solidTextRenderer;
- public static final TextPipe aaTextRenderer;
- public static final TextPipe lcdTextRenderer;
- protected static final CompositePipe colorPipe;
- protected static final PixelToShapeConverter colorViaShape;
- protected static final TextPipe colorText;
- protected static final CompositePipe clipColorPipe;
- protected static final TextPipe clipColorText;
- protected static final DuctusShapeRenderer AAColorShape;
- protected static final PixelToShapeConverter AAColorViaShape;
- protected static final DuctusShapeRenderer AAClipColorShape;
- protected static final PixelToShapeConverter AAClipColorViaShape;
- protected static final CompositePipe paintPipe;
- protected static final SpanShapeRenderer paintShape;
- protected static final PixelToShapeConverter paintViaShape;
- protected static final TextPipe paintText;
- protected static final CompositePipe clipPaintPipe;
- protected static final TextPipe clipPaintText;
- protected static final DuctusShapeRenderer AAPaintShape;
- protected static final PixelToShapeConverter AAPaintViaShape;
- protected static final DuctusShapeRenderer AAClipPaintShape;
- protected static final PixelToShapeConverter AAClipPaintViaShape;
- protected static final CompositePipe compPipe;
- protected static final SpanShapeRenderer compShape;
- protected static final PixelToShapeConverter compViaShape;
- protected static final TextPipe compText;
- protected static final CompositePipe clipCompPipe;
- protected static final TextPipe clipCompText;
- protected static final DuctusShapeRenderer AACompShape;
- protected static final PixelToShapeConverter AACompViaShape;
- protected static final DuctusShapeRenderer AAClipCompShape;
- protected static final PixelToShapeConverter AAClipCompViaShape;
- protected static final DrawImagePipe imagepipe;
- static final int LCDLOOP_UNKNOWN = 0;
- static final int LCDLOOP_FOUND = 1;
- static final int LCDLOOP_NOTFOUND = 2;
- int haveLCDLoop;
- private static RenderCache loopcache;
- static Permission compPermission;
-
- private static native void initIDs();
-
- protected SurfaceData(SurfaceType var1, ColorModel var2) {
- this.colorModel = var2;
- this.surfaceType = var1;
- this.valid = true;
- }
-
- protected SurfaceData() {
- this.valid = true;
- }
-
- public static SurfaceData getSourceSurfaceData(Image var0, SurfaceData var1, CompositeType var2, Color var3, boolean var4) {
- SurfaceManager var5 = SurfaceManager.getManager(var0);
- return var5.getSourceSurfaceData(var1, var2, var3, var4);
- }
-
- public static SurfaceData getDestSurfaceData(Image var0) {
- SurfaceManager var1 = SurfaceManager.getManager(var0);
- return var1.getDestSurfaceData();
- }
-
- public static SurfaceData restoreContents(Image var0) {
- SurfaceManager var1 = SurfaceManager.getManager(var0);
- return var1.restoreContents();
- }
-
- public void markDirty() {
- if (!this.dirty) {
- this.setDirty(true);
- this.needsBackup = true;
- this.numCopies = 0;
- }
-
- }
-
- private synchronized void setDirty(boolean var1) {
- this.dirty = var1;
- if (this.pData != 0L) {
- setDirtyNative(this, var1);
- }
-
- }
-
- private static native void setDirtyNative(SurfaceData var0, boolean var1);
-
- public void setNeedsBackup(boolean var1) {
- this.needsBackup = var1;
- if (var1) {
- this.numCopies = 0;
- } else {
- this.setDirty(false);
- }
-
- }
-
- public boolean needsBackup() {
- return this.needsBackup;
- }
-
- public void setSurfaceLost(boolean var1) {
- this.surfaceLost = var1;
- }
-
- public boolean isSurfaceLost() {
- return this.surfaceLost;
- }
-
- public final int getNumCopies() {
- return this.numCopies;
- }
-
- public int increaseNumCopies() {
- if (this.dirty) {
- this.setDirty(false);
- }
-
- ++this.numCopies;
- return this.numCopies;
- }
-
- public final boolean isValid() {
- return this.valid;
- }
-
- public Object getDisposerReferent() {
- return this.disposerReferent;
- }
-
- public long getNativeOps() {
- return this.pData;
- }
-
- public void invalidate() {
- this.valid = false;
- }
-
- public abstract SurfaceData getReplacement();
-
- public boolean canRenderLCDText(SunGraphics2D var1) {
- if (var1.compositeState <= 0 && var1.paintState <= 1 && var1.clipState <= 1 && var1.antialiasHint != 2) {
- if (this.haveLCDLoop == 0) {
- DrawGlyphListLCD var2 = DrawGlyphListLCD.locate(SurfaceType.AnyColor, CompositeType.SrcNoEa, this.getSurfaceType());
- this.haveLCDLoop = var2 != null ? 1 : 2;
- }
-
- return this.haveLCDLoop == 1;
- } else {
- return false;
- }
- }
-
- public void validatePipe(SunGraphics2D var1) {
- var1.imagepipe = imagepipe;
- if (var1.compositeState == 2) {
- if (var1.paintState > 1) {
- var1.drawpipe = paintViaShape;
- var1.fillpipe = paintViaShape;
- var1.shapepipe = paintShape;
- var1.textpipe = outlineTextRenderer;
- } else {
- if (var1.clipState == 2) {
- var1.drawpipe = colorViaShape;
- var1.fillpipe = colorViaShape;
- var1.textpipe = outlineTextRenderer;
- } else {
- if (var1.transformState >= 3) {
- var1.drawpipe = colorViaShape;
- var1.fillpipe = colorViaShape;
- } else {
- if (var1.strokeState != 0) {
- var1.drawpipe = colorViaShape;
- } else {
- var1.drawpipe = colorPrimitives;
- }
-
- var1.fillpipe = colorPrimitives;
- }
-
- var1.textpipe = solidTextRenderer;
- }
-
- var1.shapepipe = colorPrimitives;
- var1.loops = this.getRenderLoops(var1);
- }
- } else if (var1.compositeState == 3) {
- if (var1.antialiasHint == 2) {
- if (var1.clipState == 2) {
- var1.drawpipe = AAClipCompViaShape;
- var1.fillpipe = AAClipCompViaShape;
- var1.shapepipe = AAClipCompShape;
- var1.textpipe = clipCompText;
- } else {
- var1.drawpipe = AACompViaShape;
- var1.fillpipe = AACompViaShape;
- var1.shapepipe = AACompShape;
- var1.textpipe = compText;
- }
- } else {
- var1.drawpipe = compViaShape;
- var1.fillpipe = compViaShape;
- var1.shapepipe = compShape;
- if (var1.clipState == 2) {
- var1.textpipe = clipCompText;
- } else {
- var1.textpipe = compText;
- }
- }
- } else if (var1.antialiasHint == 2) {
- var1.alphafill = this.getMaskFill(var1);
- if (var1.alphafill != null) {
- if (var1.clipState == 2) {
- var1.drawpipe = AAClipColorViaShape;
- var1.fillpipe = AAClipColorViaShape;
- var1.shapepipe = AAClipColorShape;
- var1.textpipe = clipColorText;
- } else {
- var1.drawpipe = AAColorViaShape;
- var1.fillpipe = AAColorViaShape;
- var1.shapepipe = AAColorShape;
- var1.textpipe = colorText;
- }
- } else if (var1.clipState == 2) {
- var1.drawpipe = AAClipPaintViaShape;
- var1.fillpipe = AAClipPaintViaShape;
- var1.shapepipe = AAClipPaintShape;
- var1.textpipe = clipPaintText;
- } else {
- var1.drawpipe = AAPaintViaShape;
- var1.fillpipe = AAPaintViaShape;
- var1.shapepipe = AAPaintShape;
- var1.textpipe = paintText;
- }
- } else if (var1.paintState <= 1 && var1.compositeState <= 0 && var1.clipState != 2) {
- if (var1.transformState >= 3) {
- var1.drawpipe = colorViaShape;
- var1.fillpipe = colorViaShape;
- } else {
- if (var1.strokeState != 0) {
- var1.drawpipe = colorViaShape;
- } else {
- var1.drawpipe = colorPrimitives;
- }
-
- var1.fillpipe = colorPrimitives;
- }
-
- switch (var1.textAntialiasHint) {
- case 0:
- case 1:
- var1.textpipe = solidTextRenderer;
- break;
- case 2:
- var1.textpipe = aaTextRenderer;
- break;
- default:
- switch (var1.getFontInfo().aaHint) {
- case 2:
- var1.textpipe = aaTextRenderer;
- break;
- case 3:
- case 5:
- default:
- var1.textpipe = solidTextRenderer;
- break;
- case 4:
- case 6:
- var1.textpipe = lcdTextRenderer;
- }
- }
-
- var1.shapepipe = colorPrimitives;
- var1.loops = this.getRenderLoops(var1);
- } else {
- var1.drawpipe = paintViaShape;
- var1.fillpipe = paintViaShape;
- var1.shapepipe = paintShape;
- var1.alphafill = this.getMaskFill(var1);
- if (var1.alphafill != null) {
- if (var1.clipState == 2) {
- var1.textpipe = clipColorText;
- } else {
- var1.textpipe = colorText;
- }
- } else if (var1.clipState == 2) {
- var1.textpipe = clipPaintText;
- } else {
- var1.textpipe = paintText;
- }
- }
-
- }
-
- private static SurfaceType getPaintSurfaceType(SunGraphics2D var0) {
- switch (var0.paintState) {
- case 0:
- return SurfaceType.OpaqueColor;
- case 1:
- return SurfaceType.AnyColor;
- case 2:
- if (var0.paint.getTransparency() == 1) {
- return SurfaceType.OpaqueGradientPaint;
- }
-
- return SurfaceType.GradientPaint;
- case 3:
- if (var0.paint.getTransparency() == 1) {
- return SurfaceType.OpaqueTexturePaint;
- }
-
- return SurfaceType.TexturePaint;
- case 4:
- default:
- return SurfaceType.AnyPaint;
- }
- }
-
- protected MaskFill getMaskFill(SunGraphics2D var1) {
- return MaskFill.getFromCache(getPaintSurfaceType(var1), var1.imageComp, this.getSurfaceType());
- }
-
- public RenderLoops getRenderLoops(SunGraphics2D var1) {
- SurfaceType var2 = getPaintSurfaceType(var1);
- CompositeType var3 = var1.compositeState == 0 ? CompositeType.SrcNoEa : var1.imageComp;
- SurfaceType var4 = var1.getSurfaceData().getSurfaceType();
- Object var5 = loopcache.get(var2, var3, var4);
- if (var5 != null) {
- return (RenderLoops)var5;
- } else {
- RenderLoops var6 = makeRenderLoops(var2, var3, var4);
- loopcache.put(var2, var3, var4, var6);
- return var6;
- }
- }
-
- public static RenderLoops makeRenderLoops(SurfaceType var0, CompositeType var1, SurfaceType var2) {
- RenderLoops var3 = new RenderLoops();
- var3.drawLineLoop = DrawLine.locate(var0, var1, var2);
- var3.fillRectLoop = FillRect.locate(var0, var1, var2);
- var3.drawRectLoop = DrawRect.locate(var0, var1, var2);
- var3.drawPolygonsLoop = DrawPolygons.locate(var0, var1, var2);
- var3.drawPathLoop = DrawPath.locate(var0, var1, var2);
- var3.fillPathLoop = FillPath.locate(var0, var1, var2);
- var3.fillSpansLoop = FillSpans.locate(var0, var1, var2);
- var3.drawGlyphListLoop = DrawGlyphList.locate(var0, var1, var2);
- var3.drawGlyphListAALoop = DrawGlyphListAA.locate(var0, var1, var2);
- var3.drawGlyphListLCDLoop = DrawGlyphListLCD.locate(var0, var1, var2);
- return var3;
- }
-
- public abstract GraphicsConfiguration getDeviceConfiguration();
-
- public final SurfaceType getSurfaceType() {
- return this.surfaceType;
- }
-
- public final ColorModel getColorModel() {
- return this.colorModel;
- }
-
- public int getTransparency() {
- return this.getColorModel().getTransparency();
- }
-
- public abstract Raster getRaster(int var1, int var2, int var3, int var4);
-
- public boolean useTightBBoxes() {
- return true;
- }
-
- public int pixelFor(int var1) {
- return this.surfaceType.pixelFor(var1, this.colorModel);
- }
-
- public int pixelFor(Color var1) {
- return this.pixelFor(var1.getRGB());
- }
-
- public int rgbFor(int var1) {
- return this.surfaceType.rgbFor(var1, this.colorModel);
- }
-
- public abstract Rectangle getBounds();
-
- protected void checkCustomComposite() {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- if (compPermission == null) {
- compPermission = new AWTPermission("readDisplayPixels");
- }
-
- var1.checkPermission(compPermission);
- }
-
- }
-
- protected static native boolean isOpaqueGray(IndexColorModel var0);
-
- public static boolean isNull(SurfaceData var0) {
- return var0 == null || var0 == NullSurfaceData.theInstance;
- }
-
- public boolean copyArea(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) {
- return false;
- }
-
- public void flush() {
- }
-
- public abstract Object getDestination();
-
- static {
- initIDs();
- colorPrimitives = new LoopPipe();
- outlineTextRenderer = new OutlineTextRenderer();
- solidTextRenderer = new SolidTextRenderer();
- aaTextRenderer = new AATextRenderer();
- lcdTextRenderer = new LCDTextRenderer();
- colorPipe = new AlphaColorPipe();
- colorViaShape = new PixelToShapeConverter(colorPrimitives);
- colorText = new TextRenderer(colorPipe);
- clipColorPipe = new SpanClipRenderer(colorPipe);
- clipColorText = new TextRenderer(clipColorPipe);
- AAColorShape = new DuctusShapeRenderer(colorPipe);
- AAColorViaShape = new PixelToShapeConverter(AAColorShape);
- AAClipColorShape = new DuctusShapeRenderer(clipColorPipe);
- AAClipColorViaShape = new PixelToShapeConverter(AAClipColorShape);
- paintPipe = new AlphaPaintPipe();
- paintShape = new SpanShapeRenderer.Composite(paintPipe);
- paintViaShape = new PixelToShapeConverter(paintShape);
- paintText = new TextRenderer(paintPipe);
- clipPaintPipe = new SpanClipRenderer(paintPipe);
- clipPaintText = new TextRenderer(clipPaintPipe);
- AAPaintShape = new DuctusShapeRenderer(paintPipe);
- AAPaintViaShape = new PixelToShapeConverter(AAPaintShape);
- AAClipPaintShape = new DuctusShapeRenderer(clipPaintPipe);
- AAClipPaintViaShape = new PixelToShapeConverter(AAClipPaintShape);
- compPipe = new GeneralCompositePipe();
- compShape = new SpanShapeRenderer.Composite(compPipe);
- compViaShape = new PixelToShapeConverter(compShape);
- compText = new TextRenderer(compPipe);
- clipCompPipe = new SpanClipRenderer(compPipe);
- clipCompText = new TextRenderer(clipCompPipe);
- AACompShape = new DuctusShapeRenderer(compPipe);
- AACompViaShape = new PixelToShapeConverter(AACompShape);
- AAClipCompShape = new DuctusShapeRenderer(clipCompPipe);
- AAClipCompViaShape = new PixelToShapeConverter(AAClipCompShape);
- imagepipe = new DrawImage();
- loopcache = new RenderCache(30);
- }
- }
-